package br.com.sap.visao;

import java.util.List;

import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;

import br.com.sap.controle.ControleGenerico;
import br.com.sap.controle.ModeloControle;
import br.com.sap.controle.TipomarcaControle;
import br.com.sap.modelo.Categoria;
import br.com.sap.modelo.Marca;
import br.com.sap.modelo.Modelo;
import br.com.sap.modelo.Tipo;
import br.com.sap.modelo.TipoMarca;
import br.com.sap.modelo.enums.EnumSituacao;


public class CtrlModeloComposer extends CtrlGenericComposer{

	private static final long serialVersionUID = 1L;
	private String chaveBusca;
	private Checkbox statusExcluido;
	private Listbox box;
	private Modelo modelo = new Modelo();
	private Combobox combocategoria;
	private Combobox combotipo;
	private TipoMarca tipoMarca;
	private ModeloControle modeloControle = new ModeloControle();
	private TipomarcaControle tipoMarcaControle = new TipomarcaControle();
	private ListModelList<Modelo> ListarModelo;
	private Categoria categoria = new Categoria();
	private Tipo tipo = new Tipo();
	private Marca marca = new Marca();
	
	
	public String getChaveBusca() {
		return chaveBusca;
	}




	public void setChaveBusca(String chaveBusca) {
		this.chaveBusca = chaveBusca;
	}




	public Checkbox getStatusExcluido() {
		return statusExcluido;
	}




	public void setStatusExcluido(Checkbox statusExcluido) {
		this.statusExcluido = statusExcluido;
	}




	public Listbox getBox() {
		return box;
	}




	public void setBox(Listbox box) {
		this.box = box;
	}




	public ModeloControle getModeloControle() {
		return modeloControle;
	}




	public void setModeloControle(ModeloControle modeloControle) {
		this.modeloControle = modeloControle;
	}




	public Combobox getCombocategoria() {
		return combocategoria;
	}




	public void setCombocategoria(Combobox combocategoria) {
		this.combocategoria = combocategoria;
	}




	public Combobox getCombotipo() {
		return combotipo;
	}




	public void setCombotipo(Combobox combotipo) {
		this.combotipo = combotipo;
	}




	public Modelo getModelo() {
		return modelo;
	}




	public void setModelo(Modelo modelo) {
		this.modelo = modelo;
	}




	public TipomarcaControle getTipoMarcaControle() {
		return tipoMarcaControle;
	}




	public Categoria getCategoria() {
		return categoria;
	}




	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}




	public Tipo getTipo() {
		return tipo;
	}




	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}




	public void setTipoMarcaControle(TipomarcaControle tipoMarcaControle) {
		this.tipoMarcaControle = tipoMarcaControle;
	}




	public TipoMarca getTipoMarca() {
		return tipoMarca;
	}




	public void setTipoMarca(TipoMarca tipoMarca) {
		this.tipoMarca = tipoMarca;
	}




	public Marca getMarca() {
		return marca;
	}




	public void setMarca(Marca marca) {
		this.marca = marca;
	}




	public ListModelList<Modelo> getListarModelo() {
		return ListarModelo;
	}

	public void setListarModelo(ListModelList<Modelo> listarModelo) {
		ListarModelo = listarModelo;
	}


	public List<Categoria> getListarCategoria(){

		return modeloControle.getListarCategoria();

}

	public List<Tipo> getListarTipo() {			
		
		if(combocategoria.getValue() != ""){
		return modeloControle.getListarTipo(combocategoria.getValue());			
		}else{
			if(modelo.getId() != null){
				return modeloControle.getListarTipo(modelo.getTipoMarca().getTipo().getCategoria().getDescricao());
			}else{
				return null;
			}
		}
		
		
	}
	
	public List<TipoMarca> getListarTipoMarca() {		
		List<TipoMarca> retorno = null;
		if(combotipo.getValue() != ""){
		return modeloControle.getListarTipoMarca(combotipo.getValue());			
		}else{
			if(modelo.getId() != null){
				
				System.out.println(modelo.getTipoMarca().getTipo().getDescricao());
				retorno  = modeloControle.getListarTipoMarca(modelo.getTipoMarca().getTipo().getDescricao());
				
			}else{
			retorno = null;
		}
			}
		return retorno;
	}


	@SuppressWarnings("rawtypes")
	@Override
	public ControleGenerico getControle() {
		// TODO Auto-generated method stub
		return modeloControle;
	}
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void inicializarVariaveis() {
		
		chaveBusca = "";	
		modelo = new Modelo();
		modeloControle = new ModeloControle();
		tipoMarca = new TipoMarca();
		tipo = new Tipo();
		marca = new Marca();
		ListarModelo = new ListModelList(this.modeloControle.getListarModelo());
		
	}
	
	public void alterarModelo() {
		
		this.modelo = ListarModelo.get(box.getSelectedIndex());		
		this.binder.loadAll();

		
		
	}
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void procuraModelo() {
				if(chaveBusca != ""){
					if (statusExcluido.isChecked()){
						this.ListarModelo = new ListModelList(modeloControle.procuraModelo(chaveBusca, "0"));
						this.binder.loadAll();
					}else{						
						this.ListarModelo = new ListModelList(modeloControle.procuraModelo(chaveBusca, "1"));
						this.binder.loadAll();
					}
			}else{
				if (statusExcluido.isChecked()){					
					this.ListarModelo = new ListModelList(this.modeloControle.procuraModelo(chaveBusca, "0"));
					this.binder.loadAll();
				}else{
				this.ListarModelo = new ListModelList(this.modeloControle.getListarModelo());
				this.binder.loadAll();
			}
			}
		}
	
	public void registrarModelo(){
		modeloControle.registrarModelo(modelo);
	}
	
	public void desativarModelo(){
		modelo.setSituacao(EnumSituacao.INATIVO);
		modeloControle.alteraModelo(modelo);
	}
	
	public void ativarModelo(){
		modelo.setSituacao(EnumSituacao.ATIVO);
		modeloControle.alteraModelo(modelo);
	}
	

}
